/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import request from 'umi-request';
import { HTTP_SERVICE_URL } from '../../constants';

/* Login */
export const login = async (params: { username: string; password: string, systemLogin: boolean }) => {
  const { username, password, systemLogin } = params
  return request(`${HTTP_SERVICE_URL}/auth/login`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: {
      loginName: username,
      password,
      systemLogin
    },
  });
}

interface RegisterParams {
  name: string;
  comment: string;
  password: string;
  phone?: string;
  email?: string;
}
/**
 * 注册
 * @param params 
 * @returns 
 */
export const register = async (params: RegisterParams) => {
  return request(`${HTTP_SERVICE_URL}/auth/register`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: {
      ...params,
    },
  });
}

/* Logout */
export const logout = async () => {
  return request(`${HTTP_SERVICE_URL}/api/session/logout`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'geaflow-token': localStorage.getItem('GEAFLOW_TOKEN')
    },
    credentials: 'include',
    withCredentials: true,
  });
}
